How to visualize data

Visualizing the data we’re working with is indispensible both to check that data pipelines are set up correctly and to check the predictions of a trained model. For visualization, the Makie . jl plotting package is used which requires you to install a plotting backend . Learning tasks define how the data is visualized, allowing you to use the following functions for visualization:

To add support for these to a learning task, you have to implement the plotting interface for a block: showblock! .

Let’s look at an example using the Cat/Dog classifier from the saving and loading tutorial .


			
			
			
			
			import
			
			
			 
			
			CairoMakie
			
			;
			
			 
			
			
			
			CairoMakie
			
			.
			
			
			activate!
			
			(
			
			
			type
			
			=
			
			"
			
			png
			
			"
			
			)
			
			

			
			
			using
			
			
			 
			



			FastAI
	
			
			

			
			

			
			
			
			task
			
			,
			
			 
			
			model
			
			 
			
			=
			
			 
			
			



			loadtaskmodel
	
			
			(
			
			"
			
			catsdogs.jld2
			
			"
			
			)
			
			

			
			



			dir
	
			
			 
			
			=
			
			 
			
			
			joinpath
			
			(
			
			



			datasetpath
	
			
			(
			
			"
			
			dogscats
			
			"
			
			)
			
			,
			
			 
			
			"
			
			train
			
			"
			
			)
			
			

			
			
			data
			
			 
			
			=
			
			 
			
			



			loadfolderdata
	
			
			(
			



			dir
	
			
			,
			
			 
			
			
			filterfn
			
			=
			



			isimagefile
	
			
			,
			
			 
			
			
			loadfn
			
			=
			
			
			(
			



			loadfile
	
			
			,
			
			 
			



			parentname
	
			
			)
			
			)

			(mapobs(loadfile, ["/home/lorenz/.julia/datadeps/fastai-dogscats/dogscats/train/cats/cat.0.jpg", "…]), mapobs(parentname, ["/home/lorenz/.julia/datadeps/fastai-dogscats/dogscats/train/cats/cat.0.jpg", "…]))

First we load a vector of unprocessed samples, a batch of training data and the corresponding model outputs:


			
			
			
			idxs
			
			 
			
			=
			
			 
			
			
			rand
			
			(
			
			
			1
			
			:
			
			
			nobs
			
			(
			
			data
			
			)
			
			,
			
			 
			
			9
			
			)
			
			

			
			
			samples
			
			 
			
			=
			
			 
			
			
			[
			
			
			
			getobs
			
			(
			
			data
			
			,
			
			 
			
			i
			
			)
			
			 
			
			for
			
			
			 
			
			i
			
			 
			
			in
			
			 
			
			idxs
			
			]
			
			

			
			
			
			xs
			
			,
			
			 
			
			ys
			
			 
			
			=
			
			 
			
			



			makebatch
	
			
			(
			
			task
			
			,
			
			 
			
			data
			
			,
			
			 
			
			idxs
			
			)
			
			

			
			
			ŷs
			
			 
			
			=
			
			
			 
			
			
			



			gpu
	
			
			(
			
			model
			
			)
			
			(
			
			



			gpu
	
			
			(
			
			xs
			
			)
			
			)
			
			 
			
			|>
			
			 
			



			cpu
	

			2×9 Matrix{Float32}:
  2.81113  -2.68682    4.27251  -4.39263  …   2.25726  -2.52003  -4.23501
 -1.4409    0.872713  -4.20728   2.1302      -1.23509   1.5162    3.21313

Then we can visualize the data with the functions listed above:


			
			
			



			showsamples
	
			
			(
			
			task
			
			,
			
			 
			
			samples
			
			)

			
			
			



			showbatch
	
			
			(
			
			task
			
			,
			
			 
			
			xs
			
			,
			
			 
			
			ys
			
			)

			
			
			



			showpredictions
	
			
			(
			
			task
			
			,
			
			 
			
			xs
			
			,
			
			 
			
			ŷs
			
			,
			
			 
			
			ys
			
			)